package cn.com.code.generator.entity;

import cn.com.do1.dsf.common.validator.group.AddGroup;
import cn.com.do1.dsf.common.validator.group.UpdateGroup;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.util.Date;

/**
 * 流程统计
 *
 * @author nick
 * @email sunlightcs@gmail.com
 * @date 2021-05-01 17:14:53
 */
@TableName("tb_process_statistic")
@ApiModel(description = "流程统计")
@Data
public class ProcessStatistic implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * ID
	 */
    @ApiModelProperty(value = "ID", example = "1")
    @TableId
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;
	/**
	 * 应用id
	 */
    @ApiModelProperty(value = "应用id", example = "1")
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long appId;
	/**
	 * 应用名称
	 */
    @ApiModelProperty(value = "应用名称", example = "测试应用名称001")
    @Length(message="应用名称不能超过255个字符", max = 255, groups = {AddGroup.class ,  UpdateGroup.class})
    private String appName;
	/**
	 * 部门ID
	 */
    @ApiModelProperty(value = "部门ID", example = "测试部门ID001")
    @Length(message="部门ID不能超过255个字符", max = 255, groups = {AddGroup.class ,  UpdateGroup.class})
    private String deptId;
	/**
	 * 部门名称
	 */
    @ApiModelProperty(value = "部门名称", example = "测试部门名称001")
    @Length(message="部门名称不能超过255个字符", max = 255, groups = {AddGroup.class ,  UpdateGroup.class})
    private String deptName;
	/**
	 * 执行人ID
	 */
    @ApiModelProperty(value = "执行人ID", example = "测试执行人ID001")
    @Length(message="执行人ID不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String assigneeId;
	/**
	 * 执行人名称
	 */
    @ApiModelProperty(value = "执行人名称", example = "测试执行人名称001")
    @Length(message="执行人名称不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String assigneeName;
	/**
	 * 流程实例ID
	 */
    @ApiModelProperty(value = "流程实例ID", example = "测试流程实例ID001")
    @Length(message="流程实例ID不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String processInstanceId;
	/**
	 * 流程定义名称
	 */
    @ApiModelProperty(value = "流程定义名称", example = "测试流程定义名称001")
    @Length(message="流程定义名称不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String processDefinitionName;
	/**
	 * 流程定义ID
	 */
    @ApiModelProperty(value = "流程定义ID", example = "测试流程定义ID001")
    @Length(message="流程定义ID不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String processDefinitionId;
	/**
	 * 任务ID
	 */
    @ApiModelProperty(value = "任务ID", example = "测试任务ID001")
    @Length(message="任务ID不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String taskId;
	/**
	 * 任务名称
	 */
    @ApiModelProperty(value = "任务名称", example = "测试任务名称001")
    @Length(message="任务名称不能超过64个字符", max = 64, groups = {AddGroup.class ,  UpdateGroup.class})
    private String taskName;
	/**
	 * 任务开始时间
	 */
    @ApiModelProperty(value = "任务开始时间", example = "2018-08-08")
    private Date startTime;
	/**
	 * 任务结束时候
	 */
    @ApiModelProperty(value = "任务结束时候", example = "2018-08-08")
    private Date endTime;
	/**
	 * 历时（单位秒）
	 */
    @ApiModelProperty(value = "历时（单位秒）", example = "1")
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long duration;
	/**
	 * 
	 */
    @ApiModelProperty(value = "", example = "测试001")
    @Length(message="不能超过100个字符", max = 100, groups = {AddGroup.class ,  UpdateGroup.class})
    private String appKey;
	/**
	 * 
	 */
    @ApiModelProperty(value = "", example = "1")
    private Integer annual;
}
